home *** CD-ROM | disk | FTP | other *** search
/ Revolution - Das Atari CD Magazin 1997 / Revolution - Das Atari CD Magazin 1.iso / software / anwendng / qed_397 / sourcen / windows.h < prev    next >
C/C++ Source or Header  |  1996-10-13  |  8KB  |  210 lines

  1. /***************************************************************************/
  2. /*                                                                                                    */
  3. /* Modul: WINDOWS.H                                                                            */
  4. /*                                                                                                    */
  5. /***************************************************************************/
  6. #ifndef _qed_windows_h_
  7. #define _qed_windows_h_
  8.  
  9.  
  10. /****** DEFINES ************************************************************/
  11.  
  12. #define DESK                0
  13. #define CLASS_EDIT        2
  14. #define CLASS_CLIP        3
  15. #define CLASS_PROJEKT    4
  16. #define CLASS_TRASH        5
  17. #define CLASS_DIALOG        6
  18. #define CLASS_ICON        7            /* Iconify */
  19.  
  20. #define WI_NONE        0x0000        /* Keine Flags */
  21. #define WI_FULLED        0x0001        /* Fenster auf voller Größe */
  22. #define WI_MAIN_MENU 0x0002        /* Menü dieses Fensters ist nicht im Fenster */
  23. #define WI_TEXT        0x0004        /* Fenster enthält Text mit TAB und CR */ 
  24. #define WI_MOUSE        0x0008        /* Eigene Mausform */
  25. #define WI_NOTDRAWED 0x0020        /* Eine redraw-Msg wird geschluckt */
  26. #define WI_FONTSIZE    0x0040        /* Bei Fontänderung Größenanpassung */
  27. #define WI_REDRAW        0x0080        /* Fenster ganz redrawen bei size */
  28. #define WI_MODAL     0x0100        /* Flag für "Modales Dialog-Fenster" */
  29. #define WI_MODELESS  0x0200        /* Flag für "Nicht-Modales Dialog-Fenster" */
  30. #define WI_ICONIFIED    0x0400        /* Fenster ist Icon */
  31.  
  32. /* Aktionen auf Icons */
  33.  
  34. #define DO_UNDO        0
  35. #define DO_CUT            1
  36. #define DO_COPY        2
  37. #define DO_PASTE        3
  38. #define DO_CLEAR        4        /* Objekt säubern */
  39. #define DO_SELALL        5
  40. #define DO_CLOSE        6        /* alle Fenster zum Object schließen */
  41. #define DO_DESTRUCT    7        /* wie DO_CLOSE, nur auch Fenster und Objekt löschen */
  42. #define DO_OPEN        8        /* ein Fenster öffnen */
  43. #define DO_INFO        9
  44. #define DO_HELP        10
  45. #define DO_LEFT        11
  46. #define DO_RIGHT        12
  47. #define DO_FORMAT        13
  48. #define DO_PRINT        14
  49. #define DO_ABAND        15
  50. #define DO_SAVE        16
  51. #define DO_SAVENEW    17
  52. #define DO_FIND        18
  53. #define DO_FINDNEXT    19
  54. #define DO_ADD            20        /* Text hinzuladen, Projekt erweitern */
  55. #define DO_unused2    21
  56. #define DO_GOTO        22
  57. #define DO_CUTLINES    23
  58. #define DO_INIT        24
  59. #define DO_REINIT        25
  60. #define DO_TAB2LZ        26
  61. #define DO_UPDATE        27        /* Projekt: Datei geladen?, Text: auf Platte geändert? */
  62. #define DO_LZ2TAB        28
  63. #define DO_LINECOPY    29
  64. #define DO_ZEICHTAB    30
  65. #define DO_SWAPCHAR    31
  66. #define DO_ONE_LEFT    32     /* nur ein Zeichen Shiften */
  67. #define DO_ONE_RIGHT    33
  68. #define DO_BIG2SMALL    34     /* alles klein */
  69. #define DO_SMALL2BIG    35     /* alles groß */
  70. #define DO_CHNG_SMBG    36     /* groß <> klein */
  71. #define DO_CAPS        37     /* Kapitälchen */
  72. #define DO_GO_BLK_A    38     /* zum Blockende */
  73. #define DO_GO_BLK_E    39     /* zum Blockende */
  74. #define DO_UMLAUT        40
  75. #define DO_AUTOSAVE    41
  76. #define DO_FEHLER        42
  77.  
  78. #define DO_ANZ            43        /* bei Änderung menu_nr[MENU] anpassen */
  79.  
  80. #define SRCH_CLOSED    0x01        /* Search-Code für geschlossene Fenster */
  81. #define SRCH_OPENED    0x02        /* Search-Code für geöffnete Fenster */
  82. #define SRCH_ANY        (SRCH_CLOSED | SRCH_OPENED) /* Search-Code für jedes Fenster */
  83.  
  84. #define HORIZONTAL    0x01        /* Für Scrolling... */
  85. #define VERTICAL        0x02        /* ...und Schieber setzen */
  86.  
  87. #define SLPOS            0x01        /* Für Schieber setzen */
  88. #define SLSIZE            0x02
  89.  
  90. /****** TYPES ****************************************************************/
  91.  
  92. #define WINDP struct window*
  93.  
  94. /* Länge der Strings in Titel und Info */
  95. #define WINSTRLEN    256
  96.  
  97. typedef struct window
  98. {
  99.     WORD        link;
  100.     WORD        age;
  101.     WINDP        next;
  102.     WORD        handle;                /* Handle für Fenster */
  103.     WORD        opened;                /* Wie oft wurde Fenster geöffnet ? */
  104.     WORD        flags;                /* Flags des Fensters */
  105.     WORD        kind;                    /* Art des Fensters */
  106.     WORD        class;                /* Klasse des Fensters */
  107.     LRECT        doc;                    /* Position und Größe des Dokumentes */
  108.     WORD        xfac;                    /* X-Factor des Dokumentes */
  109.     WORD        yfac;                    /* Y-Factor des Dokumentes */
  110.     WORD        w_width;                /* Fensterbreite in Einheiten */
  111.     WORD        w_hight;                /* Fensterhöhe in Einheiten */
  112.     RECT        work;                    /* Arbeitsbereich */
  113.     WORD        icon_x, icon_y;    /* Position des Icons zum Fenster */
  114.     WORD        mousenum;            /* Nummer der Mausform */
  115.     BOOLEAN    changed;                /* Fenstertitel mit '*' */
  116.     UBYTE        name[WINSTRLEN];    /* Name des Fensters */
  117.     UBYTE        titel[WINSTRLEN];    /* Titel des Fensters (mit ' ' und '*') */
  118.     UBYTE        info[WINSTRLEN];    /* Infozeile des Fensters */
  119.     OBJECT    *icon;                /* Objektbaum für Iconify */
  120.     WORD        ix, iy;                /* Position des Icons */
  121.     RECT        old_size;            /* Absolute Größe vor dem Iconify */
  122.     VOID        *special;            /* z.b.V. */
  123.     WORD        slider_pos;
  124.     WORD        init;                    /* benutzt für Datei in QED-Datei */
  125.     /* Zeichnen-Aktion */
  126.     VOID        (*draw)            (WINDP window, CONST RECT *d);
  127.     /* Schnapp-Aktion */
  128.     VOID        (*snap)            (WINDP window, RECT *new, WORD mode);
  129.     /* Klick-Aktion (selektieren) */
  130.     VOID        (*click)            (WINDP window, MKINFO *mk);
  131.     /* Klick-Aktion (deselektieren) */
  132.     VOID        (*unclick)        (WINDP window);
  133.     /* Tastatur-Aktion */
  134.     BOOLEAN    (*key)            (WINDP window, MKINFO *mk);
  135.     /* Fenster-Aktionen */
  136.     VOID        (*top)            (WINDP window);
  137.     VOID        (*ontop)            (WINDP window);
  138.     VOID        (*untop)            (WINDP window);
  139.     VOID        (*bottom)        (WINDP window);
  140.     VOID        (*close)            (WINDP window);
  141.     /* Iconify */
  142.     VOID        (*iconify)        (WINDP window);
  143.     VOID        (*uniconify)    (WINDP window);
  144. } WINDOW;
  145.  
  146. #undef WINDP;
  147.  
  148. typedef WINDOW *WINDOWP;
  149. typedef WINDOW *WINDP;
  150.  
  151. /****** VARIABLES ************************************************************/
  152.  
  153. EXTERN WINDP     sel_window;        /* Zeiger auf selektiertes Fenster */
  154. EXTERN SET        sel_objs;        /* Menge selektierter Objekte */
  155. EXTERN BOOLEAN    all_iconified;    /* sind wir komplett iconified?? */
  156.  
  157. /****** FUNCTIONS ************************************************************/
  158.  
  159. VOID        add_windinfo        (WORD class, RECT *r, WORD icon_x, WORD icon_y, WORD init);
  160. BOOLEAN    get_windinfo        (WORD *last, WORD *class, RECT *r, WORD *icon_x, WORD *icon_y, WORD *used);
  161.  
  162. BOOLEAN    rc_first                (WORD wh, CONST RECT *b, RECT *r);
  163. BOOLEAN    rc_next                (WORD wh, RECT *r);
  164.  
  165. WINDP        get_window            (WORD link);
  166. WINDP        find_window            (WORD wh);
  167. WINDP        top                    (VOID);
  168. VOID        get_realtop            (VOID);
  169. WINDP        real_top                (VOID);
  170. BOOLEAN    free_for_draw        (WINDP window);
  171. WORD        num_windows            (WORD class, WORD mode);
  172. VOID        get_all_windows    (WORD class, WORD mode, VOID (*doit)(WINDP winndow));
  173.  
  174. WINDP        create_window        (WORD kind, WORD class, WORD link, VOID (*crt)(WORD link, WINDP window));
  175. BOOLEAN    open_window            (WINDP window);
  176. VOID        close_window        (WINDP window);
  177. VOID        destruct_window    (WINDP window);
  178. VOID        redraw_window        (WINDP window, CONST RECT *area);
  179. VOID        cycle_window        (VOID);
  180. VOID        clearup_windows    (WORD mode, WORD w, WORD h);
  181. VOID        top_window            (WINDP window);
  182. VOID        ontop_window        (WINDP window);
  183. VOID        untop_window        (WINDP window);
  184. VOID        bottom_window        (WINDP window, WORD msg);
  185. VOID        scroll_window        (WINDP window, WORD dir, LONG delta);
  186. VOID        arrow_window        (WINDP window, WORD arrow, long amount);
  187. VOID        h_slider                (WINDP window, WORD new_value);
  188. VOID        v_slider                (WINDP window, WORD new_value);
  189. VOID        set_sliders            (WINDP window, WORD which, WORD mode);
  190. VOID        set_wname            (WINDP window, CONST UBYTE *name);
  191. VOID        set_winfo            (WINDP window, CONST UBYTE *info);
  192. VOID        change_window        (WINDP window, BOOLEAN changed);
  193. VOID        full_window            (WINDP window);
  194. VOID        size_window            (WINDP window, CONST RECT *new, BOOLEAN border);
  195. VOID        move_window            (WINDP window, CONST RECT *new);
  196. VOID        iconify_window        (WINDP window, CONST RECT *new, BOOLEAN flag);
  197. VOID        uniconify_window    (WINDP window, CONST RECT *new);
  198. VOID        alliconify            (CONST RECT *new);
  199. VOID        click_window        (WINDP window, MKINFO *mk);
  200. VOID        unclick_window     (VOID);
  201. BOOLEAN    key_window            (WINDP window, MKINFO *mk);
  202. VOID         do_font_change        (WINDP window);
  203.  
  204. VOID        scroll_vertical    (const RECT *area, WORD delta);
  205. VOID        clr_area                (const RECT *area);
  206.  
  207. VOID        init_windows        (VOID);
  208.  
  209. #endif
  210.